/**
 * 两个有序链表a,b（带头节点）
 * 将a和b的公共元素组成新的链表c
 */

/**
 * 使用双指针，每次都将比较小的移动
 * 如果相等就同时移动
 */

#include"LinkedList.h"
void merge(LinkedList a,LinkedList b){
    LinkedListNode* p=a.next;
    LinkedListNode* q=b.next;
    LinkedListNode*r,*s;//c的尾节点和临时节点
    LinkedList *c=new LinkedList;
    r=c;//r始终指向c的尾节点
    while (p!=nullptr&&q!=nullptr)
    {
        if(p->val<q->val){
            p=p->next;
        }else if(p->val>q->val){
            q=q->next;
        }else{//如果相等的话
            s=new LinkedList();
            s->val=p->val;
            r->next=s;//尾插
            r=s;
            p=p->next;//两个指针同时移动
            q=q->next;
        }
    }
    
}